package rede;

import java.util.LinkedList;
import java.util.List;

public class Rede {

	private List<Usuario> usuarios;
	
	
	public Rede() {
		this.usuarios = new LinkedList<Usuario>();
	}
	
	
	public String getNomeUsuario(String login) throws Exception {
		
		for(Usuario u : getUsuarios())
			if (login.equals(u.getLogin())) return u.getNome();
		
		
		throw new Exception("Usuário não cadastrado.");
	}

	public String getDescricao(String login, String senha) throws Exception {
                
		for(Usuario u : getUsuarios())
			if (login.equals(u.getLogin()) && senha.equals(u.getSenha())) 
                            if (u.getDescricao().equals("") == false) 
                                return u.getDescricao();
                
		throw new Exception("Atributo não preenchido.");
	}        
        
	public String getEstadoCivil(String login, String senha) throws Exception {
                
		for(Usuario u : getUsuarios())
			if (login.equals(u.getLogin()) && senha.equals(u.getSenha())) 
                            if (u.getEstadoCivil().equals("") == false) 
                                return u.getEstadoCivil();
                
		throw new Exception("Atributo não preenchido.");
	}                

	public String getAniversario(String login, String senha) throws Exception {
                
		for(Usuario u : getUsuarios())
			if (login.equals(u.getLogin()) && senha.equals(u.getSenha())) 
                            if (u.getAniverario().equals("") == false) 
                                return u.getAniverario();
                
		throw new Exception("Atributo não preenchido.");
	}              
        
	public String getCidadeNatal(String login, String senha) throws Exception {
                
		for(Usuario u : getUsuarios())
			if (login.equals(u.getLogin()) && senha.equals(u.getSenha())) 
                            if (u.getCidadeNatal().equals("") == false) 
                                return u.getCidadeNatal();
                
		throw new Exception("Atributo não preenchido.");
	}                      
        
        public void editarDescricao(String login, String senha , String descricao) throws Exception {
            Usuario u = getUsuarioPeloLogin(login);
            
            if (senha.equals(u.getSenha())){
                u.setDescricao(descricao);
            }else{
                throw new Exception("Senha inválida.");
            }
        }

        public void editarAniversario(String login, String senha , String data) throws Exception {
            Usuario u = getUsuarioPeloLogin(login);
            
            if (senha.equals(u.getSenha())){
                u.setAniverario(data);
            }else{
                throw new Exception("Senha inválida.");
            }
        }        

        public void editarEstadoCivil(String login, String senha , String estado) throws Exception {
            Usuario u = getUsuarioPeloLogin(login);
            
            if (senha.equals(u.getSenha())){
                u.setEstadoCivil(estado);
            }else{
                throw new Exception("Senha inválida.");
            }
        }        
        
        public void editarCidadeNatal(String login, String senha , String cidade) throws Exception {
            Usuario u = getUsuarioPeloLogin(login);
            
            if (senha.equals(u.getSenha())){
                u.setCidadeNatal(cidade);
            }else{
                throw new Exception("Senha inválida.");
            }
        }               
        
	public boolean existeLoginUsuario(String login) {
		for(Usuario u : getUsuarios())
			if (login.equals(u.getLogin())) return true;
		return false;
	}       
        
        public Usuario getUsuarioPeloLogin(String login) throws Exception{
		for(Usuario u : getUsuarios())
			if (login.equals(u.getLogin())) return u;
                throw new Exception("O usuario com o login+"+ "'" + login + "'" +"não existe");
        }
        
	public boolean existeNomeUsuario(String nome) {
		for(Usuario u : getUsuarios())
			if (nome.equals(u.getNome())) return true;
		return false;
	}                

	public void criarUsuario(String login, String senha, String nome) {
		Usuario u = new Usuario(login,senha,nome);
		this.getUsuarios().add(u);
		
		
	}

        
        
        
        
    /**
     * @return the usuarios
     */
    public List<Usuario> getUsuarios() {
        return usuarios;
    }

    /**
     * @param usuarios the usuarios to set
     */
    public void setUsuarios(List<Usuario> usuarios) {
        this.usuarios = usuarios;
    }
    
    public void zerarUsuario(){
        this.usuarios = new LinkedList<Usuario>();
    }
}